/*
 * io.h
 *
 *  Created on: 09/06/2011
 *      Author: Jonatas Lopes de Paiva
 *
 * Define a funcao para a leitura do arquivo e montagem do Grafo.
 */

#ifndef IO_H_
#define IO_H_

#include <stdio.h>
#include <string.h>

#include "types.h"
#include "graphFunctions.h"

/*
 * Funcao que le o arquivo e monta o grafo.
 *
 * A funcao retorna um Grafo montado, ou senao retorna NULL nas
 * seguintes situacoes:
 *
 * - Arquivo nao existe ou nao pode ser aberto
 *
 * - Uma aresta ou custo sao invalidos, as arestas devem ser numeros
 *   inteiros positivos, e os custos devem ser numeros entre 0 e 1000
 *   (isto esta no enunciado, 1000 seria o custo infinito).
 *
 * - Final de arquivo inesperado. Basicamente, o arquivo possui triplas
 *   a primeira indica o primeiro vertice, a segunda o segundo vertice e
 *   a terceira o custo. Se o arquivo acabar antes da leitura da segunda ou
 *   terceira arestas houve um erro.
 *
 * - Aresta repetida. Houve a tentativa de inserir uma aresta no Grafo, mas
 *   ja existia uma aresta entre a mesma origem e destino.
 *
 * */
Grafo *readFile(char* fileIn);

#endif /* IO_H_ */
